package cn.wolfcode.luowowo.webSite.util;

import cn.wolfcode.luowowo.common.exception.LogicException;
import cn.wolfcode.luowowo.common.util.AjaxResult;
import com.alibaba.fastjson.JSON;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 异常偶同意处理类
 * controller类的增强标签:
 *   在访问请求映射方法之前与之后对这些方法进行功能增强.
 *
 *   之前: 对请求参数处理.
 *
 *   之后: 对请求方法处理之后一些操作
 *         请求方法处理过程中,出现异常了统一操作
 *
 *   @ControllerAdvice   : 控制层功能增强注解
 *
 */

@ControllerAdvice
public class CommonExceptionHandler {

    //异常处理器, 参数表示: 当请求映射方法执行过程中抛出该异常时候, 执行该方法.
    @ExceptionHandler(LogicException.class)
    public void logicExp(Exception e, HttpServletResponse resp) throws IOException {
        e.printStackTrace();
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write(JSON.toJSONString(new AjaxResult(false ,e.getMessage())));
    }

    @ExceptionHandler(RuntimeException.class)
    public void runTimeExp(Exception e, HttpServletResponse resp) throws IOException {
        e.printStackTrace();
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write(JSON.toJSONString(new AjaxResult(false,"系统出现未知异常，请联系客服。")));
    }
}
